#pragma once

#include "StdAfx.h"
#include "CdiGUID.h"

class CdiObject : private CdiGUID
{
protected:
  BOOL m_isEnabled;

public:
  CdiObject() : CdiGUID( true ) { }
  virtual ~CdiObject() { }

public:
  // Methods
  /////////////////////////
  virtual bool Equals( CdiObject& Object )
  {
    return (0 == m_strGUID.compare( Object.m_strGUID ));
  }

public:
  // Properties
  ///////////////////////////

  // Get Unique ID that represents this c lass
  string GetUniqueID() const
  {
    return m_strGUID;
  }

  virtual inline void AssertValid() 
  { 
    _ASSERT( true ); 
  }

  inline BOOL IsEnabled() const { return m_isEnabled; }
  inline void SetEnabled( BOOL enable ) { m_isEnabled = enable; }
};
